/**
 * Created by Yuri2 on 2017/7/10.
 */

window.Win10 = {
    _version: 'v1.1.2.4',
    _debug: true,
    _bgs: {
        main: '',
        mobile: '',
    },
    _countTask: 0,
    _newMsgCount: 0,
    _animated_classes: [],
    _animated_liveness: 0,
    _switchMenuTooHurry: false,
    _lang: 'unknown',
    _iframeOnClick: {
        resolution: 200,
        iframes: [],
        interval: null,
        Iframe: function () {
            this.element = arguments[0];
            this.cb = arguments[1];
            this.hasTracked = false;
        },
        track: function (element, cb) {
            this.iframes.push(new this.Iframe(element, cb));
            if (!this.interval) {
                var _this = this;
                this.interval = setInterval(function () { _this.checkClick(); }, this.resolution);
            }
        },
        checkClick: function () {
            if (document.activeElement) {
                var activeElement = document.activeElement;
                for (var i in this.iframes) {
                    var eid = undefined;
                    if ((eid = this.iframes[i].element.id) && !document.getElementById(eid)) {
                        delete this.iframes[i];
                        continue;
                    }
                    if (activeElement === this.iframes[i].element) { // user is in this Iframe
                        if (this.iframes[i].hasTracked === false) {
                            this.iframes[i].cb.apply(window, []);
                            this.iframes[i].hasTracked = true;
                        }
                    } else {
                        this.iframes[i].hasTracked = false;
                    }
                }
            }
        }
    },
    _iframe_click_lock_children: {},
    _renderBar: function () {
        //调整任务栏项目的宽度
        if (this._countTask <= 0) { return; } //防止除以0
        var btns = $("#win10_btn_group_middle>.btn");
        btns.css('width', ('calc(' + (1 / this._countTask * 100) + '% - 1px )'))
    },
    _handleReady: [],
    _hideShortcut: function () {
        var that = $("#win10 #win10-shortcuts .shortcut");
        that.removeClass('animated flipInX');
        that.addClass('animated flipOutX');
    },
    _showShortcut: function () {
        var that = $("#win10 #win10-shortcuts .shortcut");
        that.removeClass('animated flipOutX');
        that.addClass('animated flipInX');
    },
    _checkBgUrls: function () {
        var loaders = $('#win10>.img-loader');
        var flag = false;
        if (Win10.isSmallScreen()) {
            if (Win10._bgs.mobile) {
                loaders.each(function () {
                    var loader = $(this);
                    if (loader.attr('src') === Win10._bgs.mobile && loader.hasClass('loaded')) {
                        Win10._setBackgroundImg(Win10._bgs.mobile);
                        flag = true;
                    }
                });
                if (!flag) {
                    //没找到加载完毕的图片
                    var img = $('<img class="img-loader" src="' + Win10._bgs.mobile + '" />');
                    $('#win10').append(img);
                    Win10._onImgComplete(img[0], function () {
                        img.addClass('loaded');
                        Win10._setBackgroundImg(Win10._bgs.mobile);
                    })
                }
            }
        } else {
            if (Win10._bgs.main) {
                loaders.each(function () {
                    var loader = $(this);
                    if (loader.attr('src') === Win10._bgs.main && loader.hasClass('loaded')) {
                        Win10._setBackgroundImg(Win10._bgs.main);
                        flag = true;
                    }
                });
                if (!flag) {
                    //没找到加载完毕的图片
                    var img = $('<img class="img-loader" src="' + Win10._bgs.main + '" />');
                    $('#win10').append(img);
                    Win10._onImgComplete(img[0], function () {
                        img.addClass('loaded');
                        Win10._setBackgroundImg(Win10._bgs.main);
                    })
                }
            }
        }

    },
    _startAnimate: function () {
        setInterval(function () {
            var classes_lenth = Win10._animated_classes.length;
            var animated_liveness = Win10._animated_liveness;
            if (animated_liveness === 0 || classes_lenth === 0 || !$("#win10-menu").hasClass('opened')) { return; }
            $('#win10-menu>.blocks>.menu_group>.block').each(function () {
                if (!$(this).hasClass('onAnimate') && Math.random() <= animated_liveness) {
                    var that = $(this);
                    var class_animate = Win10._animated_classes[Math.floor((Math.random() * classes_lenth))];
                    that.addClass('onAnimate');
                    setTimeout(function () {
                        that.addClass(class_animate);
                        setTimeout(function () {
                            that.removeClass('onAnimate');
                            that.removeClass(class_animate);
                        }, 3000);
                    }, Math.random() * 2 * 1000)
                }
            })
        }, 1000);
    },
    _onImgComplete: function (img, callback) {
        if (!img) { return; }
        var timer = setInterval(function () {
            if (img.complete) {
                callback(img);
                clearInterval(timer);
            }
        }, 50)
    },
    _setBackgroundImg: function (img) {
        $('#win10').css('background-image', 'url(' + img + ')')
    },
    _settop: function (layero) {
        if (!isNaN(layero)) {
            layero = this.getLayeroByIndex(layero);
        }
        //置顶窗口
        var max_zindex = 0;
        $(".win10-open-iframe").each(function () {
            z = parseInt($(this).css('z-index'));
            $(this).css('z-index', z - 1);
            if (z > max_zindex) { max_zindex = z; }
        });
        layero.css('z-index', max_zindex + 1);
    },
    _checkTop: function () {
        var max_index = 0, max_z = 0, btn = null;
        $("#win10_btn_group_middle .btn.show").each(function () {
            var index = $(this).attr('index');
            var layero = Win10.getLayeroByIndex(index);
            var z = layero.css('z-index');
            if (z > max_z) {
                max_index = index;
                max_z = z;
                btn = $(this);
            }
        });
        this._settop(max_index);
        $("#win10_btn_group_middle .btn").removeClass('active');
        if (btn) {
            btn.addClass('active');
        }
    },
    _renderContextMenu: function (x, y, menu, trigger) {
        this._removeContextMenu();
        if (menu === true) { return; }
        var dom = $("<div class='win10-context-menu'><ul></ul></div>");
        $('#win10').append(dom);
        var ul = dom.find('ul');
        for (var i = 0; i < menu.length; i++) {
            var item = menu[i];
            if (item === '|') {
                ul.append($('<hr/>'));
                continue;
            }
            if (typeof (item) === 'string') {
                ul.append($('<li>' + item + '</li>'));
                continue;
            }
            if (typeof (item) === 'object') {
                var sub = $('<li>' + item[0] + '</li>');
                ul.append(sub);
                sub.click(trigger, item[1]);
                continue;
            }
        }
        //修正坐标
        if (x + 150 > document.body.clientWidth) { x -= 150 }
        if (y + dom.height() > document.body.clientHeight) { y -= dom.height() }
        dom.css({
            top: y,
            left: x,
        });
    },
    _removeContextMenu: function () {
        $('.win10-context-menu').remove();
    },
    _closeWin: function (index) {
        $("#win10_" + index).remove();
        layer.close(index);
        Win10._checkTop();
        Win10._countTask--;//回退countTask数
        Win10._renderBar();
    },
    _fixWindowsHeightAndWidth: function () {
        //此处代码修正全屏切换引起的子窗体尺寸超出屏幕
        var opens = $('.win10-open-iframe');
        var clientHeight = document.body.clientHeight;
        opens.each(function () {
            var layero_opened = $(this);
            var height = layero_opened.css('height');
            height = parseInt(height.replace('px', ''));
            if (height + 40 >= clientHeight) {
                layero_opened.css('height', clientHeight - 40);
                layero_opened.find('.layui-layer-content').css('height', clientHeight - 83);
                layero_opened.find('.layui-layer-content iframe').css('height', clientHeight - 83);
            }
        })
    },

    /**
     * 原 win10_bind_open_windows 子窗口事件自动绑定插件
     * @author:vG
     * @修订:Yuri2
     * @version:2.0.1
     * 说明: 所有#win10下的元素加入类win10-open-window即可自动绑定openUrl函数，无须用onclick手动绑定
     */
    _bind_open_windows: function () {
        // 注册事件委派 打开url窗口
        $('#win10').on('click', '.win10-open-window', function () {
            //>> 获取当前点击的对象
            $this = $(this);
            //>> 判断url地址是否为空 如果为空 不予处理
            if ($this.data('url') !== "") {
                //>> 获取弹窗标题
                var title = $this.data('title') || '',
                    areaAndOffset;
                //>> 判断是否有标题图片
                var bg = $this.data('icon-bg') ? $this.data('icon-bg') : '';
                if ($this.data('icon-image')) {
                    //>> 加入到标题中
                    title = '<img class="icon ' + bg + '" src="' + $this.data('icon-image') + '"/>' + title;
                }
                if ($this.data('icon-font')) {
                    //>> 加入到标题中
                    title = '<i class="fa fa-fw fa-' + $this.data('icon-font') + ' icon ' + bg + '"></i>' + title;
                }
                if (!title && $this.children('.icon').length === 1 && $this.children('.title').length === 1) {
                    title = $this.children('.icon').prop("outerHTML") + $this.children('.title').html();
                }
                //>> 判断是否需要 设置 区域宽度高度
                if ($this.data('area-offset')) {
                    areaAndOffset = $this.data('area-offset');
                    //>> 判断是否有分隔符
                    if (areaAndOffset.indexOf(',') !== -1) {
                        areaAndOffset = eval(areaAndOffset);
                    }
                }
                //>> 调用win10打开url方法
                Win10.openUrl($this.data('url'), title, areaAndOffset);
            }
        })
    },
    _init: function () {

        //获取语言
        this._lang = (navigator.language || navigator.browserLanguage).toLowerCase();

        $("#win10_btn_win").click(function () {
            Win10.commandCenterClose();
            Win10.menuToggle();
        });
        $("#win10_btn_command").click(function () {
            Win10.menuClose();
            Win10.commandCenterToggle();
        });
        $("#win10 .desktop").click(function () {
            Win10.menuClose();
            Win10.commandCenterClose();
        });
        $('#win10').on('click', ".msg .btn_close_msg", function () {
            var msg = $(this).parent();
            $(msg).addClass('animated slideOutRight');
            setTimeout(function () {
                msg.remove()
            }, 500)
        });
        $('#win10_btn_command_center_clean_all').click(function () {
            var msgs = $('#win10_command_center .msg');
            msgs.addClass('animated slideOutRight');
            setTimeout(function () {
                msgs.remove()
            }, 1500);
            setTimeout(function () {
                Win10.commandCenterClose();
            }, 1000);
        });
        $("#win10_btn_show_desktop").click(function () {
            $("#win10 .desktop").click();
            Win10.hideWins();
        });
        $("#win10-menu-switcher").click(function () {
            if (Win10._switchMenuTooHurry) { return; }
            Win10._switchMenuTooHurry = true;
            var class_name = 'win10-menu-hidden';
            var list = $("#win10-menu>.list");
            var blocks = $("#win10-menu>.blocks");
            var toggleSlide = function (obj) {
                if (obj.hasClass(class_name)) {
                    obj.addClass('animated slideInLeft');
                    obj.removeClass('animated slideOutLeft');
                    obj.removeClass(class_name);
                } else {
                    setTimeout(function () {
                        obj.addClass(class_name);
                    }, 450);
                    obj.addClass('animated slideOutLeft');
                    obj.removeClass('animated slideInLeft');
                }
            };
            toggleSlide(list);
            toggleSlide(blocks);
            setTimeout(function () {
                Win10._switchMenuTooHurry = false;
            }, 520)
        });
        $("#win10_btn_group_middle").click(function () {
            $("#win10 .desktop").click();
        });
        $(document).on('click', '.win10-btn-refresh', function () {
            var index = $(this).attr('index');
            var iframe = Win10.getLayeroByIndex(index).find('iframe');
            iframe.attr('src', iframe.attr('src'));
        });
        $(document).on('click', '.win10-btn-change-url', function () {
            var index = $(this).attr('index');
            var iframe = Win10.getLayeroByIndex(index).find('iframe');
            layer.prompt({
                title: Win10.lang('编辑网址', 'Edit URL'),
                formType: 2,
                skin: 'win10-layer-open-browser',
                value: iframe.attr('src'),
                area: ['500px', '200px'],
                zIndex: 99999999999
            }, function (value, i) {
                layer.close(i);
                layer.msg(Win10.lang('请稍候...', 'Hold on please...'), { time: 1500 }, function () {
                    iframe.attr('src', value);
                });
            });
        });
        $(document).on('mousedown', '.win10-open-iframe', function () {
            var layero = $(this);
            Win10._settop(layero);
            Win10._checkTop();
        });
        $('#win10_btn_group_middle').on('click', '.btn_close', function () {
            var index = $(this).parent().attr('index');
            Win10._closeWin(index);
        });
        $('#win10-menu .list').on('click', '.item', function () {//点击展开隐藏菜单
          
            var e = $(this);
            if (e.hasClass('has-sub-down')) {
                $('#win10-menu .list .item.has-sub-up').toggleClass('has-sub-down').toggleClass('has-sub-up');
                $("#win10-menu .list .sub-item").slideUp();
            }
            if (e.next().hasClass('sub-item')) {
                e.toggleClass('has-sub-down').toggleClass('has-sub-up');
            }
            while (e.next().hasClass('sub-item')) {
                e.next().slideToggle();
                e = e.next();
            }
        });
        $("#win10-btn-browser").click(function () {
            // var area = ['100%', (document.body.clientHeight - 40) + 'px'];
            // var offset = ['0', '0'];
            layer.prompt({
                title: Win10.lang('访问网址', 'Visit URL'),
                formType: 2,
                value: '',
                skin: 'win10-layer-open-browser',
                area: ['300px', '150px'],
                zIndex: 99999999999
            }, function (value, i) {
                layer.close(i);
                layer.msg(Win10.lang('请稍候...', 'Hold on please...'), { time: 1500 }, function () {
                    Win10.openUrl(value, value);
                });
            });
        });
        setInterval(function () {
            var myDate = new Date();
            var year = myDate.getFullYear();
            var month = myDate.getMonth() + 1;
            var date = myDate.getDate();
            var hours = myDate.getHours();
            var mins = myDate.getMinutes(); if (mins < 10) { mins = '0' + mins }
            $("#win10_btn_time").html(hours + ':' + mins + '<br/>' + year + '/' + month + '/' + date);
        }, 1000);
        //离开前警告
        document.body.onbeforeunload = function (event) {
            var rel = Win10.lang('系统可能不会保存您所做的更改', 'The system may not save the changes you have made.');
            if (!window.event) {
                event.returnValue = rel;
            } else {
                window.event.returnValue = rel;
            }
        };
      
        Win10._startAnimate();//动画处理
        Win10.renderShortcuts();//渲染图标
        $("#win10-shortcuts").removeClass('shortcuts-hidden');//显示图标
        Win10._showShortcut();//显示图标
        Win10.renderMenuBlocks();//渲染磁贴
        //窗口改大小，重新渲染
        $(window).resize(function () {
             
            Win10.renderShortcuts();
            Win10._checkBgUrls();
            if (!Win10.isSmallScreen()) Win10._fixWindowsHeightAndWidth(); //2017年11月14日修改，加入了if条件
        });
        //细节
        $(document).on('focus', ".win10-layer-open-browser textarea", function () {
            $(this).attr('spellcheck', 'false');
        });
        $(document).on('keyup', ".win10-layer-open-browser textarea", function (e) {
            if (e.keyCode === 13) {
                $(this).parent().parent().find('.layui-layer-btn0').click();
            }
        });
       
        //点击清空右键菜单
        $(document).click(function (event) {
            if (!event.button)
                Win10._removeContextMenu();
        });
        //禁用右键的右键
        $(document).on('contextmenu', '.win10-context-menu', function (e) {
            e.preventDefault();
            e.stopPropagation();
        });
        //设置默认右键菜单
        Win10.setContextMenu('#win10', true);
        Win10.setContextMenu('#win10>.desktop', [
            ['<i class="fa fa-fw fa-star"></i> 收藏本页', function () {
                var url = window.location;
                var title = document.title;
                var ua = navigator.userAgent.toLowerCase();
                if (ua.indexOf("360se") > -1) {
                    layer.alert(Win10.lang('您的浏览器不支持,请按 Ctrl+D 手动收藏!', 'Your browser does not support, please press Ctrl+D to manual collection!'));
                }
                else if (ua.indexOf("msie 8") > -1) {
                    window.external.AddToFavoritesBar(url, title); //IE8
                }
                else if (document.all) {
                    try {
                        window.external.addFavorite(url, title);
                    } catch (e) {
                        layer.alert(Win10.lang('您的浏览器不支持,请按 Ctrl+D 手动收藏!', 'Your browser does not support, please press Ctrl+D to manual collection!'));
                    }
                }
                else if (window.sidebar) {
                    window.sidebar.addPanel(title, url, "");
                }
                else {
                    layer.alert(Win10.lang('您的浏览器不支持,请按 Ctrl+D 手动收藏!', 'Your browser does not support, please press Ctrl+D to manual collection!'));
                }
            }],
            ['<i class="fa fa-fw fa-window-maximize"></i> ' + Win10.lang('进入全屏', 'Enable Full Screen'), function () { Win10.enableFullScreen() }],
            ['<i class="fa fa-fw fa-window-restore"></i> ' + Win10.lang('退出全屏', 'Disable Full Screen'), function () { Win10.disableFullScreen() }],
            '|',
            ['<i class="fa fa-fw fa-info-circle"></i> ' + Win10.lang('关于', 'About Us'), function () { Win10.aboutUs() }],
        ]);
        Win10.setContextMenu('#win10_btn_group_middle', [
            ['<i class="fa fa-fw fa-window-maximize"></i> ' + Win10.lang('全部显示', 'Show All Windows'), function () { Win10.showWins() }],
            ['<i class="fa fa-fw fa-window-minimize"></i> ' + Win10.lang('全部隐藏', 'Hide All Windows'), function () { Win10.hideWins() }],
            ['<i class="fa fa-fw fa-window-close"></i> ' + Win10.lang('全部关闭', 'Close All Windows'), function () { Win10.closeAll() }],
        ]);

        //处理消息图标闪烁
        setInterval(function () {
            var btn = $("#win10-msg-nof.on-new-msg");
            if (btn.length > 0) {
                btn.toggleClass('fa-commenting-o');
            }
        }, 600);

        //绑定快捷键
        $("body").keyup(function (e) {
            if (e.ctrlKey) {
                switch (e.keyCode) {
                    case 37://left
                        $("#win10_btn_win").click();
                        break;
                    case 38://up
                        Win10.showWins();
                        break;
                    case 39://right
                        $("#win10_btn_command").click();
                        break;
                    case 40://down
                        Win10.hideWins();
                        break;
                }
            }
        });

        /**
         * WIN10-UI v1.1.2.2 桌面舞台支持补丁
         * WIN10-UI v1.1.2.2之后的版本不需要此补丁
         * @usage 直接引用即可（需要jquery）
         * @author Yuri2
         */
        if ($("#win10-desktop-scene").length < 1) {
            $("#win10-shortcuts").css({
                position: 'absolute',
                left: 0,
                top: 0,
                'z-index': 100,
            });
            $("#win10 .desktop").append("<div id='win10-desktop-scene' style='width: 100%;height: calc(100% - 40px);position: absolute;left: 0;top: 0; z-index: 0;background-color: transparent;'></div>")
        }

        //属性绑定
        Win10._bind_open_windows();
    },
    setBgUrl: function (bgs) {
        this._bgs = bgs;
        this._checkBgUrls();
    },
    menuClose: function () {
        $("#win10-menu").removeClass('opened');
        $("#win10-menu").addClass('hidden');
        this._showShortcut();
        $(".win10-open-iframe").removeClass('hide');
    },
    menuOpen: function () {
        $("#win10-menu").addClass('opened');
        $("#win10-menu").removeClass('hidden');
        this._hideShortcut();
        $(".win10-open-iframe").addClass('hide');
    },
    menuToggle: function () {
        if (!$("#win10-menu").hasClass('opened')) {
            this.menuOpen();
        } else {
            this.menuClose();
        }
    },
    commandCenterClose: function () {
        $("#win10_command_center").addClass('hidden_right');
        this._showShortcut();
        $(".win10-open-iframe").removeClass('hide');
    },
    commandCenterOpen: function () {
        $("#win10_command_center").removeClass('hidden_right');
        this._hideShortcut();
        $(".win10-open-iframe").addClass('hide');
        $("#win10-msg-nof").removeClass('on-new-msg fa-commenting-o');
    },
    renderShortcuts: function () {
        var h = parseInt($("#win10 #win10-shortcuts")[0].offsetHeight / 100);
        var x = 0, y = 0;
        $("#win10 #win10-shortcuts .shortcut").each(function () {
            $(this).css({
                left: x * 82 + 10,
                top: y * 100 + 10,
            });
            y++;
            if (y >= h) {
                y = 0;
                x++;
            }
        });
    },
    renderMenuBlocks: function () {
        var cell_width = 44;
        var groups = $("#win10-menu .menu_group");
        groups.each(function () {
            var group = $(this);
            var blocks = group.children('.block');
            var max_height = 0;
            blocks.each(function () {
                var that = $(this);
                var loc = that.attr('loc').split(',');
                var size = that.attr('size').split(',');
                var top = (loc[1] - 1) * cell_width + 40;
                var height = size[1] * cell_width;
                var full_height = top + height;
                if (full_height > max_height) { max_height = full_height }
                that.css({
                    top: top,
                    left: (loc[0] - 1) * cell_width,
                    width: size[0] * cell_width,
                    height: height,
                })

            });
            group.css('height', max_height);
        });
    },
    commandCenterToggle: function () {
        if ($("#win10_command_center").hasClass('hidden_right')) {
            this.commandCenterOpen();
        } else {
            this.commandCenterClose();
        }
    },
    newMsg: function (title, content, handle_click) {
        var e = $('<div class="msg">' +
            '<div class="title">' + title + '</div>' +
            '<div class="content">' + content + '</div>' +
            '<span class="btn_close_msg fa fa-close"></span>' +
            '</div>');
        $("#win10_command_center .msgs").prepend(e);
        e.find('.content:first,.title:first').click(function () {
            if (handle_click) {
                handle_click(e);
            }
        });
        layer.tips(Win10.lang('新消息:', 'New message:') + title, '#win10_btn_command', {
            tips: [1, '#3c6a4a'],
            time: 3000
        });
        if ($("#win10_command_center").hasClass('hidden_right')) {
            $("#win10-msg-nof").addClass('on-new-msg');
        }
    },
    getLayeroByIndex: function (index) {
        return $('#' + 'layui-layer' + index)
    },
    isSmallScreen: function (size) {
        if (!size) {
            size = 768
        }
        var width = document.body.clientWidth;
        return width < size;
    },
    enableFullScreen: function () {
        var docElm = document.documentElement;
        //W3C
        if (docElm.requestFullscreen) {
            docElm.requestFullscreen();
        }
        //FireFox
        else if (docElm.mozRequestFullScreen) {
            docElm.mozRequestFullScreen();
        }
        //Chrome等
        else if (docElm.webkitRequestFullScreen) {
            docElm.webkitRequestFullScreen();
        }
        //IE11
        else if (docElm.msRequestFullscreen) {
            document.body.msRequestFullscreen();
        }
    },
    disableFullScreen: function () {
        if (document.exitFullscreen) {
            document.exitFullscreen();
        }
        else if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
        }
        else if (document.webkitCancelFullScreen) {
            document.webkitCancelFullScreen();
        }
        else if (document.msExitFullscreen) {
            document.msExitFullscreen();
        }
    },
    buildList: function () { 
        $("#win10-menu .list .sub-item").slideUp();
        $("#win10-menu .list .item").each(function () {
            if ($(this).next().hasClass('sub-item')) {
                $(this).addClass('has-sub-down');
                $(this).removeClass('has-sub-up');
            }
        })
    },
    openUrl: function (url, title, areaAndOffset) {
        if (this._countTask > 12) {
            layer.msg("您打开的太多了，歇会儿吧~");
            return false;
        } else {
            this._countTask++;
        }
        if (!url) { url = '404' }
        url = url.replace(/(^\s*)|(\s*$)/g, "");
        var preg = /^(https?:\/\/|\.\.?\/|\/\/?)/;
        if (!preg.test(url)) {
            url = 'http://' + url;
        }
        if (!url) {
            url = '//yuri2.cn';
        }
        if (!title) {
            title = url;
        }
        var area, offset;
        if (this.isSmallScreen() || areaAndOffset === 'max') {
            area = ['100%', (document.body.clientHeight - 40) + 'px'];
            offset = ['0', '0'];
        } else if (typeof areaAndOffset === 'object') {
            area = areaAndOffset[0];
            offset = areaAndOffset[1];
        } else {
            area = ['80%', '80%'];
            var topset, leftset;
            topset = parseInt($(window).height());
            topset = (topset - (topset * 0.8)) / 2 - 41;
            leftset = parseInt($(window).width());
            leftset = (leftset - (leftset * 0.8)) / 2 - 120;
            offset = [Math.round((this._countTask % 10 * 20) + topset) + 'px', Math.round((this._countTask % 10 * 20 + 100) + leftset) + 'px'];
        }
        var index = layer.open({
            type: 2,
            shadeClose: true,
            shade: false,
            maxmin: true, //开启最大化最小化按钮
            title: title,
            content: url,
            area: area,
            offset: offset,
            isOutAnim: false,
            skin: 'win10-open-iframe',
            cancel: function (index, layero) {
                $("#win10_" + index).remove();
                Win10._checkTop();
                Win10._countTask--;//回退countTask数
                Win10._renderBar();
            },
            min: function (layero) {
                layero.hide();
                $("#win10_" + index).removeClass('show');
                Win10._checkTop();
                return false;
            },
            full: function (layero) {
                layero.find('.layui-layer-min').css('display', 'inline-block');
            },
        });
        $('#win10_btn_group_middle .btn.active').removeClass('active');
        var btn = $('<div id="win10_' + index + '" index="' + index + '" class="btn show active"><div class="btn_title">' + title + '</div><div class="btn_close fa fa-close"></div></div>');
        var layero_opened = Win10.getLayeroByIndex(index);
        layero_opened.css('z-index', Win10._countTask + 813);
        Win10._settop(layero_opened);
        layero_opened.find('.layui-layer-setwin').prepend('<a class="win10-btn-change-url" index="' + index + '" title="' + Win10.lang('修改地址', 'Change URL') + '" href="javascript:void(0)"><span class="fa fa-chain"></span></a><a class="win10-btn-refresh" index="' + index + '" title="' + Win10.lang('刷新', 'Refresh') + '" href="javascript:void(0)"><span class="fa fa-refresh"></span></a>');
        layero_opened.find('.layui-layer-setwin .layui-layer-max').click(function () {
            setTimeout(function () {
                var height = layero_opened.css('height');
                height = parseInt(height.replace('px', ''));
                if (height >= document.body.clientHeight) {
                    layero_opened.css('height', height - 40);
                    layero_opened.find('.layui-layer-content').css('height', height - 83);
                    layero_opened.find('.layui-layer-content iframe').css('height', height - 83);
                }
            }, 300);

        });
        $("#win10_btn_group_middle").append(btn);
        Win10._renderBar();
        btn.click(function () {
            var index = $(this).attr('index');
            var layero = Win10.getLayeroByIndex(index);
            var settop = function () {
                //置顶窗口
                var max_zindex = 0;
                $(".win10-open-iframe").each(function () {
                    z = parseInt($(this).css('z-index'));
                    $(this).css('z-index', z - 1);
                    if (z > max_zindex) { max_zindex = z; }
                });
                layero.css('z-index', max_zindex + 1);
            };
            if ($(this).hasClass('show')) {
                if ($(this).hasClass('active')) {
                    $(this).removeClass('active');
                    $(this).removeClass('show');
                    Win10._checkTop();
                    layero.hide();
                } else {
                    $('#win10_btn_group_middle .btn.active').removeClass('active');
                    $(this).addClass('active');
                    Win10._settop(layero);
                }
            } else {
                $(this).addClass('show');
                $('#win10_btn_group_middle .btn.active').removeClass('active');
                $(this).addClass('active');
                Win10._settop(layero);
                layero.show();
            }
        });


        Win10._iframeOnClick.track(layero_opened.find('iframe:first')[0], function () {
            if (Object.getOwnPropertyNames(Win10._iframe_click_lock_children).length === 0) {
                Win10._settop(layero_opened);
                Win10._checkTop();
            } else {
                console.log('click locked');
            }
        });

        this.menuClose();
        this.commandCenterClose();
        return index;
    },
    closeAll: function () {
        $(".win10-open-iframe").remove();
        $("#win10_btn_group_middle").html("");
        Win10._countTask = 0;
        Win10._renderBar();
    },
    setAnimated: function (animated_classes, animated_liveness) {
        this._animated_classes = animated_classes;
        this._animated_liveness = animated_liveness;
    },
    exit: function () {
        layer.confirm(Win10.lang('确认要关闭本页吗?', 'Are you sure you want to close this page?'), { icon: 3, title: Win10.lang('提示', 'Prompt') }, function (index) {
            document.body.onbeforeunload = function () { };
            window.location.href = "about:blank";
            window.close();
            layer.close(index);
            layer.alert(Win10.lang('哎呀,好像失败了呢。', 'Ops...There seems to be a little problem.'), {
                skin: 'layui-layer-lan'
                , closeBtn: 0
            });
        });

    },
    lang: function (cn, en) {
        return this._lang === 'zh-cn' || this._lang === 'zh-tw' ? cn : en;
    },
    aboutUs: function () {
        //关于我们
        layer.open({
            type: 1,
            closeBtn: 1, //不显示关闭按钮
            anim: 2,
            skin: 'layui-layer-molv',
            title: 'DL-School' + this._version,
            shadeClose: true, //开启遮罩关闭
            area: ['320px', '200px'], //宽高
            content: '<div style="padding: 10px;font-size: 12px">' +
                '<p>技术支持：大鱼</p>' +
                '<p>大鱼©版权所有</p>' +
                '<p>邮箱:295611875@qq.com</p>' +
                '</div>'
        });
    },
    setContextMenu: function (jq_dom, menu) {
        if (typeof (jq_dom) === 'string') {
            jq_dom = $(jq_dom);
        }
        jq_dom.unbind('contextmenu');
        jq_dom.on('contextmenu', function (e) {
            if (menu) {
                Win10._renderContextMenu(e.clientX, e.clientY, menu, this);
                if (e.cancelable) {
                    // 判断默认行为是否已经被禁用
                    if (!e.defaultPrevented) {
                        e.preventDefault();
                    }
                }
                e.stopPropagation();
            }
        });
    },
    hideWins: function () {
        $('#win10_btn_group_middle>.btn.show').each(function () {
            var index = $(this).attr('index');
            var layero = Win10.getLayeroByIndex(index);
            $(this).removeClass('show');
            $(this).removeClass('active');
            layero.hide();
        })
    },
    showWins: function () {
        $('#win10_btn_group_middle>.btn').each(function () {
            var index = $(this).attr('index');
            var layero = Win10.getLayeroByIndex(index);
            $(this).addClass('show');
            layero.show();
        });
        Win10._checkTop();
    },
    getDesktopScene: function () {
        return $("#win10-desktop-scene");
    },
    onReady: function (handle) {
        Win10._handleReady.push(handle);
    }
};
$(function () {
    Win10._init();
    for (var i in Win10._handleReady) {
        var handle = Win10._handleReady[i];
        handle();
    }
});
